Image compression techniques reduce the memory required for storage of large or complex images, permitting storage of images in devices with limited memory. For example, image compression techniques used in digital copiers and scanners aid in storage of complex images for subsequent printing. Similarly, image compression benefits communications where bandwidth limitations would otherwise render transmission of image data impractical. Image compression also offers substantial benefits for archiving large image libraries.
The JPEG (Joint Photographic Experts Group) standard is a set of image compression techniques that have gained widespread acceptance. The most popular of the three general compression methods defined by the JPEG standard is the baseline sequential discrete cosine transform (DCT) technique. This technique involves a mathematical operation that changes image data into a frequency representation. The results of the DCT operation can be used to reduce the file size of grayscale and color images with a near minimum possible loss of image quality. The basic image unit for JPEG compression is the image block which includes an eight pixel by eight pixel subset of the image. Each image block is analyzed and quantized, yielding DCT coefficients representative of the image block content. The coefficients are then Huffman coded to reduce the amount of data used to characterize them.
Calculation of the forward DCT (FDCT) typically includes multiplying a set of image values by a matrix of coefficients. Calculation of the inverse DCT (IDCT) uses the transpose of the FDCT matrix. These operations exploit symmetries in the matrix coefficients to reduce the number of multiplications and additions and are often referred to as fast DCTs. Unfortunately, the methods for implementing FDCTs and IDCTs are not the same. Significant additional logic is added to make the transform operate in both forward and inverse modes.